package chai.ning.statics;

/**
 * 1、对于方法来说，应该说是 调用(invoke)方法
 * 2、对于字段来说，应该说是 访问字段（访问成员变量），涉及两个操作: 赋值 、取值
 */
public class Sheep {
	
	// 字段(Field)本质上就是一个变量(variable)，因为是类的组成成员(member)，所以被称作 成员变量
	// 被 static 修饰的成员变量就是 类变量 ( static variable ) ，类变量是属于类的
	public static String school;
	
	// 类初始化器 ( static initializer )
	static {
		System.out.println( "Sheep : static initializer" );
		System.out.println( school ); // 输出默认值
		// 类初始化器用于在类初始化阶段完成对 类变量 的初始化操作
		school = "大肥羊学校"  ;
		System.out.println( school ); // 输出新赋予的值
	}
	
	// 被 static 修饰的方法(Method)就是 类方法 ，类方法 应该通过 类 来 调用 ( invoke )
	public static void show() {
		// System.out.println( Sheep.school ); // static way
		System.out.println( school ); // 访问 ( Access ) school 变量
	}
	
	// 含有 public static void main( String[] ) 方法的类被称作 启动类 ( 即可以被运行的类 )
	// 运行一个 启动类 时 会导致 该类被初始化，从而导致该类的 类初始化器 执行
	public static void main(String[] args) {
		// 运行一个启动类视为对该类的【主动使用】
	}
	

}
